package cn.yuli.beverage;
/**
 * 模板方法：咖啡因饮料抽象类
 * @author yuli
 *
 */
public abstract class CaffeineBeverage {
	/**
	 * 准备冲泡，算法流程
	 */
	public void preparRecipe(){
		boilWater();
		brew();
		pourlnCup();
		//由用户决定是否添加调味品
		if(hook()){
			addcondiments();
		}
	}
	
	void boilWater(){
		System.out.println("准备一壶沸腾的水");
	}
	
	void pourlnCup(){
		System.out.println("将饮料倒进杯子里");
	}
	/**
	 * 冲泡方法
	 */
	abstract void brew();
	/**
	 * 添加调味品
	 */
	abstract void addcondiments();
	/**
	 * 钩子，由用户决定是实现
	 */
	boolean hook(){
		return false;
	}
}
